package com.schoolhelper.social.service;

import com.schoolhelper.social.domain.Message;
import java.util.List;
import java.util.Map;

public interface MessageService {
    
    /**
     * 发送消息
     * @param message 消息对象
     * @return 是否成功
     */
    boolean sendMessage(Message message);
    
    /**
     * 获取两个用户之间的聊天记录
     * @param userId1 用户1ID
     * @param userId2 用户2ID
     * @param page 页码
     * @param size 每页大小
     * @return 消息列表
     */
    List<Message> getChatHistory(Long userId1, Long userId2, int page, int size);
    
    /**
     * 获取用户的聊天列表
     * @param userId 用户ID
     * @return 聊天列表
     */
    List<Map<String, Object>> getChatList(Long userId);
    
    /**
     * 获取未读消息数量
     * @param userId 用户ID
     * @return 未读消息数量
     */
    int getUnreadCount(Long userId);
    
    /**
     * 获取未读消息详情（按发送者分组）
     * @param userId 用户ID
     * @return 未读消息详情列表
     */
    List<Map<String, Object>> getUnreadMessageDetails(Long userId);
    
    /**
     * 标记消息为已读
     * @param senderId 发送者ID
     * @param receiverId 接收者ID
     */
    void markMessagesAsRead(Long senderId, Long receiverId);
    
    /**
     * 获取两个用户之间的消息数量
     * @param userId1 用户1ID
     * @param userId2 用户2ID
     * @return 消息数量
     */
    int getMessageCountBetweenUsers(Long userId1, Long userId2);
}